home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / libg_261.zip / libg_261 / libg++ / NEWS < prev    next >
Text File  |  1994-10-21  |  24KB  |  550 lines

  1. SUMMARY OF RECENT MAJOR CHANGES to LIBG++.
  2. (Also check ../libio/NEWS.)
  3.  
  4. *** Major changes in libg++ version 2.6.1:
  5.  
  6. * A first release of the "GNU Standard C++ Library" is in the libstdc++
  7. directory.  Building it requires gcc-2.6.1, so it is disabled by
  8. default.  See ./README for how to enable it.  This library will
  9. contain classes and functions according to the ANSI/ISO standard.
  10. The copyright conditions are those of libio, not those of libg++ proper.
  11.  
  12. * The Regex class no longer uses the old GNU regex functions.
  13. Instead it uses the new GNU rx library (librx), written by Tom Lord.
  14. (The rx library is also used in new versions of GNU sed.)
  15. The rx library lazily constructs a deterministic finite-state
  16. automaton, so it seldom has to do backtracking.
  17.  
  18. *** Major changes in libg++ version 2.6:
  19.  
  20. * There is a new set of bit*.c and bit*.h files in the src directory.
  21. This is a preliminary version of language-independent library for
  22. general low-level manipulation of bitstrings.  The BitString class
  23. has been (partially) re-written to use the new functions.
  24. (What kind of copyright to use for this library has not been
  25. decided yet.  It will at least be OK to treat it as LGPL code.)
  26.  
  27. *** Major changes in libg++ version 2.5:
  28.  
  29. * The iostream directory is gone.  It has been replaced by ../libio.
  30. The latter is a major re-write.  One major change is that libiostream.a
  31. (which is built in ../libio) can be used indendently of libg++,
  32. which is interesting because you may find its licensing conditions
  33. less onerous.  See ../libio/README.
  34.  
  35. Also, the guts of the code has been re-written in C instead of C++.
  36. This is so that you can build a C stdio implementation without
  37. a C++ compiler (as was needed before).  However, this is not 100% done.
  38.  
  39. * There is (preliminary) iostream manual (in ../libio/iostream.texi).
  40.  
  41. * The files in libg++/g++-include are now obsolete.  Instead, it
  42. is the compiler's responsibility to generate "fixed" copies of your
  43. existing C header files (such as /usr/include/stdio.h).  These copies
  44. (together with a g++ compiler modification) provide C++ access
  45. to the standard C library.  See the fixproto script in the gcc-2.5
  46. distribution.
  47.  
  48. *** Major changes in libg++ version 2.4:
  49.  
  50. * The configuration scheme has been largely re-vamped.
  51. Instead of the definitions that are common to all (or many) of
  52. the Makefiles being duplicated in each Makefile.in, they have
  53. now been moved into a shell script libg++/config.shared, which
  54. generates these standard definitions and rules.
  55.  
  56. Most of libg++/tests/Makefile, which had a lot of regularity,
  57. is now generated by the libg++/tests/Makefile.sh shell script.
  58.  
  59. Also libg++ no longer uses configure's 'subdirs' mechanism.
  60. Instead, it uses the 'configdirs' mechanism that most Cygnus
  61. packages use.  This means that each directory has its own
  62. configure.in, and each directory can be independently re-configured.
  63.  
  64. * Lots of fixes have been made so libg++ can be compiled by compilers
  65. other than g++ (specifically cfront), though there are still lots of
  66. warnings.  You may still have to edit some Makefiles etc; this
  67. will probably become easier in the next release.  Many of the
  68. changes involved not depending on g++ extensions.  However, some changes
  69. turned out to be that libg++ was depending on bugs in g++'s overload
  70. resolution.  These bugs in g++ are being fixed; this will cause some
  71. difficulties for libg++.  In some cases, we have decided that the
  72. cleanest fix is removing some libg++ functionality.  Specifically,
  73. the coersions Integer::operator long and Integer::operator double
  74. have been replaced by explicit methods Integer::as_long and
  75. Integer::as_double.  This means you may need to change your code.
  76. Please let us know if this is problematial.
  77.  
  78. *** Changes in libg++ version 2.3:
  79.  
  80. * iostream classes use multiple inheritance and virtual base classes.
  81. This is a little more complicated and slightly less efficient,
  82. but saves a slight amount of code duplication.  More importantly,
  83. it improves compatibility with other iostream implementations.
  84.  
  85. * A few of pseudo-template classes have been converted to use
  86. real templates.  The style used emphasizes sharing code for
  87. multiple template instatiations at the cost of somewhat more
  88. complex internal logic.  No promise is implied about when/if
  89. the remaining ones will be converted.  Using the template classes
  90. assumes gcc-2.3 or similar compiler.
  91.  
  92. * Added stdiobuf class which provides a streambuf wrapper around
  93. a stdio (FILE*).  This can be useful when mixing C and C++ code.
  94.  
  95. * streambuf sputn/sgetn virtuals have been made renamed to xsputn/xsgetn,
  96. and sputn/sgetn addedas inline methods.  This change is to be compatible
  97. with AT&T and ANSI; it could require changes to user code if you have
  98. written your own streambuf sub-classes.
  99.  
  100. * New utils/c++-mode.el (for editing C++ in emacs).
  101.  
  102. * Lots of little fixes all over.
  103.  
  104. *** Changes in libg++ version 2.2:
  105.  
  106. * Accurate input and output of floating-point numbers
  107.  
  108. * 'make clean' and its variants have been made more consistent.
  109.  
  110. * Improved portability (SVR4, NeXT, ...)
  111.  
  112.  
  113. *** Changes in libg++ version 2.1:
  114.  
  115. * "Class" include files in g++-include moved to src
  116.  
  117. Those include files that are just wrappers around C header files
  118. (e.g. signal.h) remain in g++-include, while the header files
  119. that are specific to libg++ (or C++) have been moved to src.
  120. If your system includes "C++-ready" C header files (as in SVR4 or
  121. Linux), you don't need to use the wrappers in g++-include.
  122.  
  123. * Portability
  124.  
  125. A lot of effort has gone into making libg++ more portable.
  126. Code that depends on internals of "traditional" implementations
  127. had been made more portable.  The 'libiberty' library is incorporated
  128. into libg++; this supplies (if needed) many functions that may be
  129. missing on particular hosts.
  130.  
  131. * Auto-configuration
  132.  
  133. New scripts automaticly figure out various properties of the
  134. system (and compiler) you use.  While these scripts are not
  135. foolproof, the intent is that on most systems you will no longer
  136. have to edit Makefiles or build special configuration files.
  137.  
  138. * Iostream bug-fixes
  139.  
  140. There have been numerous bug-fixes and enhancements in the
  141. iostream code.  Lots of rough edges in the streambuf and filebuf
  142. classes have been fixed.
  143.  
  144. There are still some rough edges of the protocol (as in what the
  145. streambuf class should do, and what sub-classes such as filebuf
  146. should handle).
  147.  
  148. * iostream enhancements for lexing/parsing.
  149.  
  150. You can now create a 'streammarker' object, which is a "remembered"
  151. position is a streambuf.  Later, you can backtrack to that position.
  152. This is supposed to work, even if the streambuf is unbuffered and
  153. otherwise unseekable, because the streambuffer never throws away
  154. any data following an extant streammarker.  This feature will be
  155. used to build various scanning/parsing facilities (with backup).
  156. (See iostream.texi for an example.)
  157.  
  158. * stdio library
  159.  
  160. Now supports all of ANSI's functionality.
  161.  
  162. *** Changes in libg++ version 2.0:
  163.  
  164. * iostream classes
  165.  
  166. The major change is that input/output uses the new iostream library.
  167. The design is based on (but not identical to) iostreams from
  168. AT&T C++ release 2.x, and the ANSI X3J16/WG21 draft C++ standard.
  169.  
  170. The iostream classes replace the old stream.  The new
  171. package provides some compatibility hooks.  Including the
  172. obsolete <stream.h> (or defining _STREAM_COMPAT) makes 
  173. more obsolete methods and features available.  However,
  174. you will probably have to change your code if you have used
  175. any libg++-specific extensions (such as the File class).
  176.  
  177. If you want stick with the old stream classes, change the
  178. definition of IO_DIR in Make.defs (to old-stream).  You will
  179. also need to 'make depend' in directories that contain depend,
  180. and then re-configure everything.  Note that the old-stream
  181. classes are *not* supported and *will* go away in a future release.
  182.  
  183. * Use g++ version 2 features (if available)
  184.  
  185. The main one is that an include file g++-include/FOO.h
  186. that is a wrapper for a standard C include file will now
  187. #include_next <FOO.h> instead of #include "/usr/include/FOO.h".
  188. This provides more flexibility wrt to using alternate C libraries
  189. (such as GNU libc), but it is not without its own problems.
  190. For example, if you compile libg++.a with a g++ that has old
  191. incompatible g++-include files in its path, these will be
  192. read (and then in turn read the /usr/include file).  If there
  193. are conflicts, you can remove the previously installed include files,
  194. or try something like 'make XTRAFLAGS=-I/usr/include' (or whatever
  195. include path gcc uses by default).
  196.  
  197. * Major Makefile changes.
  198. You can now 'make' from any subdirectory.
  199.  
  200. * Use of 'configure'.
  201.  
  202. * Copyrights changed to use the Library license version 2.0.
  203. (Some files have not been updated yet; we'll try to finish it for 2.1.)
  204.  
  205. * The prototype class SplayNode was put into a separate include file
  206. (g++-include/gen/SplayNode.hP).  This is to avoid duplication.
  207. It will require you to generate the approriate SplayNode file
  208. if you use SplayBag, SplaySet, or SplayPQ.
  209.  
  210. * You can now use inline functions in header files without
  211. having to use either -O or _DUSE_LIBGXX_INLINES.  (The #ifdef
  212. that depended on these has been removed, so inline functions
  213. are inline independent of -O).
  214.  
  215. * Numerous minor bug-fixes and enhancements.
  216.  
  217. *** Changes in libg++-1.39.0 from libg++-1.37.0
  218.  
  219.     * All files use the new g++ #pragma interface / #pragma implementation
  220.       convention, which minimies duplication of `outlined' inlines
  221.       and vtables. This also causes no inlines to be used at
  222.       all when not compiling with `-O', which speeds compilation
  223.       and simplifies debugging.
  224.  
  225.     * Many .h header file names had to be shortened so as to simulaneously
  226.       work with SYSV and with #pragma interface (since .h and .cc file
  227.       base names must match.) Sorry!
  228.  
  229.     * All genclass-able files have been moved to g++-include/gen.
  230.  
  231.     * various and sundry bug fixes, minor enhancements, and/or portability 
  232.         improvements as described in the ChangeLog. 
  233.  
  234. *** changes from libg++-1.36.3 to libg++-1.37.0
  235.  
  236.     * Most utility classes and functions are now in stand-alone .cc and/or .h
  237.       files. This should generate smaller exectuables, and, sometimes
  238.       faster compilation. In particular, istream.h, and ostream.h are
  239.       now separately includable. If you only need one, you don't have
  240.       to get the other.
  241.  
  242.     * The Plex classes now understand `const'. The `changes' and `changed'
  243.       member functions were removed, since it is now possible to
  244.       avoid changes in Plex structures by using const versions.
  245.  
  246.     * class RandomInteger is available, courtesy of John Reidl.
  247.  
  248.     * PlotFile3D, a 3D plot class is in libg++/etc. It will be
  249.       incorporated into libg++ proper for the next release, perhaps
  250.        with a few changes. Thanks to Tom Ngo.
  251.  
  252.     * various and sundry bug fixes, minor enhancements, and/or portability 
  253.         improvements as described in the ChangeLog. 
  254.  
  255.     * The file etc/HINTS is an emacs RMAIL file that contains recent
  256.         bug-lib-g++ list mail and related messages that may be useful.
  257.  
  258.  
  259. *** changes from libg++-1.36.1 to libg++-1.36.3
  260.  
  261.     * `Tmp' classes have been eliminated from Strings, Integers, etc.
  262.        (Via some retuning of the main classes, Tmp classes were found
  263.         to not significantly impact performance one way or the other,
  264.         so they were removed.)
  265.  
  266.     * There is now a version of malloc, directly supporting operator
  267.       new, etc. It may be faster and better suited to C++ applications
  268.       than your libc malloc. You should be able to use it unless you need
  269.       a special malloc for a distributed shared memory environment or
  270.       the like. If you can't use it, edit the appropriate flag in
  271.       the top-level Makefile. I would very much appreciate feedback
  272.       about whether this malloc makes any difference in time or space
  273.       efficiency than whatever you are now using.
  274.  
  275.     * By default, output is now line-buffered. Use the
  276.       NO_LINE_BUFFER_STREAMBUF define in the Makefile to override
  277.  
  278.     * Otherwise, the stream classes remain C++-1.2 compatible.
  279.       C++-2.0-compatible versions are still in the works.
  280.  
  281.     * various and sundry bug fixes, minor enhancements, and/or portability 
  282.         improvements as described in the ChangeLog. 
  283.  
  284. *** changes from libg++-1.35.0 & 1.35.1 to 1.36.1
  285.  
  286.     * various and sundry bug fixes, minor enhancements, and/or portability 
  287.         improvements as described in the ChangeLog. 
  288.  
  289.     * Most everything should now work on most SystemV machines. Let me
  290.         know if they don't.
  291.  
  292.     * genclass now allows an optional prefix to be used instead of type
  293.         name concatenation in order to help minimize filename
  294.         lengths for SYSV users. This is not a great solution, but
  295.         is A solution to filename length problems for SYSV users.
  296.  
  297.     * Some, but not all classes now behave well with respect to 
  298.       the new 2.0 const specifications. Some uncertainties about
  299.       how g++ will interpret gcc-based const function qualifiers
  300.       (to indicate lack of side effects) versus C++-2.0 const member
  301.       functions has held up the conversion of some classes to use
  302.       const in either or both of these ways.
  303.  
  304.     * A version of etags suitable for use with c++ is in etc/
  305.         (courtesy of J. Clark)
  306.  
  307.     * `graph', a unix graph(1) work-alike is in libg++/etc, courtesy
  308.         of Rich Murphey.
  309.  
  310.     * RAVLMap (Ranked AVLs) prototypes.
  311.  
  312.     * The GetOpt class & support has been moved from etc/ into libg++.a
  313.  
  314.     * Streams have been redone to be nearly 100% AT&T 1.2 compatible.
  315.         One minor possible incompatibility exists (ostream<< char)
  316.         that can be eliminated via #define NO_OUTPUT_CHAR at the
  317.         top of stream.h. This is probably necessary in order to
  318.         compile et++. See libg++.texinfo for more details.
  319.  
  320.         The new stream implementation is not particulary pretty.
  321.         Its main virtue is that it avoids some of the worst things 
  322.         about both AT&T streams and old libg++ streams. A much
  323.         superior AT&T 2.0-iostream superset is in the works
  324.         for future release.
  325.  
  326. *** changes from libg++-1.25.0 to libg++-1.32.0
  327.  
  328.     * Nearly all data and methods previously declared as `private'
  329.         are now declared as `protected' to make subclassing from
  330.         library classes easier.
  331.  
  332.     * Most classes now contain a method `OK()' that checks to
  333.         make sure that an objects internal data is in a valid state.
  334.         See the documentation for further details
  335.  
  336.     * Mosts tests in ./tests now contain various kinds of assert
  337.         statements. If tests execute without assertion failures,
  338.         and without any other errors that cause aborted execution,
  339.         you may consider them successful. The test files now include
  340.         nearly all of my internal tests, which in turn have been
  341.         made more extensive.
  342.  
  343.     * Plex classes are available. 
  344.         A bit of propaganda about these:
  345.         Plexes are very attractive replacements for arrays
  346.         in many contexts. Try them!
  347.  
  348.     * `shrink' and `contains' have been added to Obstack
  349.  
  350.     * Files and streams have not yet been revamped (a complete
  351.         reworking awaits the AT&T 2.0 stream specification), but
  352.         have been adjusted to provide slightly faster IO in some 
  353.         cases, and now support the use of a user-supplied string 
  354.         to read or write from instead of an actual IO source.
  355.  
  356.     * Rationals are now normalized when input via `>>'.
  357.  
  358.     * atoI is fixed.
  359.  
  360.     * variable-length representations in String, Integer, etc., are
  361.         now completely different. See the documentation for details.
  362.  
  363.     * New String functions:
  364.        * readline -- read in a line from an istream as a String
  365.        * prepend -- prepend stuff to a String
  366.        * through  -- make a SubString from beginning to match point
  367.        * from     -- make a SubString from match point to end
  368.        * s[i]     -- now returns the char by reference
  369.  
  370.     * BitVec's are no longer supported, since their capabilities
  371.         are now incorporated in the revised BitString class.
  372.  
  373.     * stdarg.h and regex.h are revised to support the Sun4
  374.  
  375.     * Several interesting and/or useful examples of libg++
  376.         class use are in ./etc, mainly courtesy of Doug Schmidt.
  377.  
  378.     * .cc file names are now all less than 15 characters. Some
  379.         .h file names are longer, but this should not present
  380.         problems on SYSV systems.
  381.  
  382.     * pseudo-generic `proto' classes have been thoroughly revised:
  383.         * The prototype file names now end in `P', not `.proto'
  384.             and are in the g++-include directory
  385.         * A single, simple-to-use collection traversal mechanism
  386.             via pseudo-indices (`Pix') is used instead of particular
  387.             traversal friend classes.
  388.         * `Bag' prototypes are included
  389.         * Base classes are now supplied, so that all implementations
  390.             of Sets, Bags, are derived, allowing programmers to
  391.             mix and match implementations.
  392.         * They are now simpler to create: all comparison operators
  393.             and the like are now defined as macros in a `defs' file
  394.             which uses some reasonable defaults.
  395.         * The `Dictionary' versions of Set prototypes are not now
  396.             supported. Revised versions of such classes are forthcoming.
  397.         * Class prototypes previously labelled as `Assoc' are now
  398.             called `Maps', with slightly different capabilities.
  399.  
  400.     * Splay tree prototypes are available.
  401.         A bit more propaganda:  Consider using Splay tree
  402.         based containers (Set, Bag, Map, PQ). They are often
  403.         the most efficient structures when performing mixtures
  404.         of operations (adds, deletes, searches...)
  405.  
  406.     * Fixed precision reals are available, courtesy of Kurt Baudendistel
  407.  
  408.     * An ordered hash Set prototype (VOHSet) is available,
  409.         courtesy of Doug Schmidt.
  410.  
  411.     * MLCG now allows access and modifications to the seeds.
  412.  
  413.     * The Normal random generator is fixed.
  414.  
  415.     * SampleStatistic now allows any prob value for confidence
  416.         intervals.
  417.  
  418.     * some simple timer routines are in builtin.cc, courtesy of Doug Schmidt
  419.  
  420.     * While the Vec class prototypes are still available, they are
  421.         currently undergoing revision in order to correspond to
  422.         the forthcoming Matrix package (which should be available
  423.         in the next libg++ release).
  424.  
  425.     * A C++ version of GPERF, a perfect hash function generator
  426.        program is also available in ./etc, courtesy of Doug Schmidt.
  427.  
  428.  
  429. *** changes from libg++-1.22.2 to libg++-1.25.0
  430.  
  431.   * All reported errors from the previous release are fixed, and many
  432.     suggested modifications have been performed. Thanks to all who
  433.     have sent bug reports and comments, including those with mail
  434.     addresses that I have not been able to reply to. (My mail connections
  435.     are sometimes more than a little fragile. If you send me mail and
  436.     I have not replied within a few days, you may want to try again. Sorry.)
  437.  
  438.   * A serious problem in the use of Obstacks by conversion functions 
  439.     has been repaired.
  440.  
  441.   * A bug in maintaining reference counts on `find' and related operations
  442.     in List prototype classes has been fixed.
  443.  
  444.   * Strings now support self case manipulation in addition to the
  445.     functional versions.
  446.  
  447.   * Some new functions have been added to builtin.[h.cc]. All are now
  448.     documented in libg++.texinfo
  449.  
  450.   * Overload declarations are now performed in std.h and math.h,
  451.     rather than builtin.h,  to eliminate some include file ordering
  452.     problems.
  453.  
  454.   * Random, RNG, and SampleStatistic classes are available,
  455.     thanks to Dirk Grunwald.
  456.  
  457.   * A BitVec class is available.
  458.  
  459.   * The are many new generic container class prototype files. These
  460.     support container classes based on elementary data structures
  461.     (and a couple of non-elementary ones). Please read the documentation.
  462.  
  463.   * Class prototype OSet has been modified and renamed OLSet.
  464.  
  465.   * The genclass utility has been modified
  466.  
  467. *** changes from libg++-1.22.1 to 1.22.2
  468.  
  469.   * Tests files are now in a separate directory.
  470.  
  471.   * Several minor errors (Complex unary -, several BitString functions)
  472.     have been repaired.
  473.  
  474.   * pow(0,0) returns 1 for all versions of pow.
  475.  
  476.   * An experimental generic class prototyping feature is provided,
  477.     including prototypes for lisp-style lists and ordered list-based sets.
  478.  
  479.   * several include files with the same names as those in AT&T CC
  480.     are provided. These simply #include other files. OOPS should now
  481.     compile using only g++-include files. See, however, the note
  482.     about struct exception in file math.h
  483.  
  484.   * Some rearrangement of files containing char* conversion has been
  485.     done to eliminate linking of unnecessary classes.
  486.  
  487.   * The inline-only-when-optimizing feature is still not supported.
  488.  
  489. * New Random number generator classes are not yet available. Stubs for
  490.   these files are in this directory. They should be available for next
  491.   release.
  492.  
  493. *** changes from libg++-1.21.1 to 1.22.0
  494.  
  495.   * All documentation is in a stand-alone texinfo file, libg++.texinfo,
  496.     and is on its way to becoming a decent piece of documentation.
  497.  
  498.   * All reported errors from the previous release are fixed, and many
  499.     suggested modifications have been performed. Thanks to all who
  500.     have sent bug reports and comments, including those with mail
  501.     addresses that I have not been able to reply to. (My mail connections
  502.     are sometimes more than a little fragile. If you send me mail and
  503.     I have not replied within a few days, you may want to try again. Sorry.)
  504.  
  505.   * New Complex, BitSet, and BitString classes are available. You will
  506.     be performing a valuable service if you try these out and report
  507.     back any bugs/comments/suggestions about these or any other classes.
  508.  
  509.   * File `values.h' has been added. This contains various system
  510.     constants like the number of bits per long, etc. It contains
  511.     much of the same information as sun <values.h>, although a
  512.     few names and things differ slightly.
  513.  
  514.   * Files `builtin.h', `builtin.cc', and `convert.cc' have been added.
  515.     `builtin' contains common inline and non-inline functions on
  516.     builtin types (like `abs'). `convert' contains code for performing
  517.     IO and char* conversions, mainly via Obstacks. Most of these
  518.     functions are not new -- they have been collected from other .h
  519.     and .cc files.
  520.  
  521.   * Files `std.h' and `math.h' now declare all libc.a C functions 
  522.     in a way that allows any of them to be overloaded in C++.
  523.  
  524.   * Strings and Integers now perform expansion via realloc() -- 
  525.     see libconfig.h about whether you should #define SHOULD_FREE_TO_REALLOC.
  526.  
  527.   * `eatwhite' is supported for istreams.
  528.  
  529.   * File::getline(String, ...) and get(String) have been removed in order to
  530.     maintain greater independence of different classes.
  531.  
  532.   * Strings now provide substring matching via new versions of
  533.     `contains' and `matches', `common_prefix' and `common_suffix'.
  534.     Also, there is more support for case operations via `fcompare', etc.
  535.     The versions of `decompose' that do not deal with Regexes have
  536.     been deleted since they provide little functionality over other
  537.     operations. Also, a few special case functions dealing with char*'s
  538.     have been deleted since the required constructors are necessary
  539.     anyway. Several other corrections have been made in String.cc,
  540.     including the elimination of a few aliasing problems.
  541.  
  542.   * The implementations of Integers and Rationals are now both much
  543.     more efficient and well-tested, while remaining machine independent.
  544.     A few minor visible features have been added and/or changed.
  545.         
  546.   * The `box' command in PlotFile is now simulated, whether or not
  547.     it is present in libplot.a
  548.  
  549.   * The inlining-only-if-optimizing feature is still not fully implemented.
  550.